Snowflake发布UniStore,进军HTAP
新粉请关注我的公众号
在一年一度的Snowflake Summit上,Snowflake宣布它们发布最新的UniStore,正式进军HTAP市场。
UniStore是Snowflake的一个新的存储引擎,不是Column Store 是个Row Store,它保证了Snowflake对一个row的访问会很快,并支持事务处理。
在UniStore上创建一种新的类型的表叫做HybridTable。这种表可以支持事务处理,用户可以在上面执行OLTP的操作。同时这种表也支持OLAP的操作。因此,这就成了HTAP,同时支持事务处理和分析处理。
HybridTable也开始正式支持一些以前OLAP不支持的东西,比如说Primary Key和Foreign Key。比如说某些类型的索引。目前公布的信息并不是很多。
创建的HybridTable必须要有Primary Key,Snowflake系统会确保这个Primary Key是唯一的。这听起来好像有点意思,为什么必须要Primary Key呢?我们等一下再说。
根据Snowflake公布的信息,Adobe, UiPath, IQVIA, Novarits这几家公司是early adoptor,其中Adobe尤其是早期用户。
Adobe也为Snowflake站台,对在UniStore上同时做事务处理和分析处理的能力赞不绝口,表示好好好。
以上是公开关于UniStore和HybridTable的信息,Snowflake官宣的内容大概就这么多了。
那么下面说一点独家的吧。为什么每个HybridTable需要一个primary Key,这很容易联想到底层用了什么存储。大概率是一个Key-Value Store。
我悄悄问了一圈,结果有人告诉我,底下用的是Foundation DB。有关Foundation DB这个东西,我2018年写过深入分析,有兴趣的,自己在我的公众号上考古吧。我公众号上很多古老的东西,今天去看也还是有点价值的。
但是大概率我觉得这个Foundation DB肯定是魔改过的,不可能是之前那个。
Snowflake之前魔改过一版本,用来处理它的metadata service。
但是Metadata service对throughput和latency的要求,和data上做transaction对这些东西的要求不一样。
不管怎么样,这样一来,底层的存储和TiDB就有点像了。不知道它有没有搞TiDB那样用Raft复制三副本保持稳定性。我希望它最好没搞,因为搞了的话,单机性能大概率和TiDB一样废掉了。
这样一看,Snowflake和TiDB要开始PK HTAP了。但是其实也不尽然,因为TiDB的OPAP不是用Key-Value Store做存储的,用的是魔改的ClickHouse做的。
也就是说TiDB是真的有两份数据,一份给OLTP用一份给OLAP用。而今天看到的这个UniStore,至少现在的实现来看,OLTP的数据并没有额外的OLAP的备份。
很多细节都没有公布出来,比如说,可不可以建索引啊,索引是不是clustered,能不能索引用Column Store来存啊,等等等等了。
但是不管怎么样,如果用Foundation DB来做底层的存储的话,除非魔改的很好,不然Foundation DB的各种问题也继承过来了。总之Foundation DB怎么看都不是一个很好的事务存储引擎。
但是Snowflake依然选择了它,大概率是因为之前魔改做Metadata Service有技术积累了吧。继续魔改也不怕。
现在更有意思的是看Databricks怎么玩了。毕竟Databricks现在想玩LakeHouse,而Snowflake现在却跑去做HTAP了。总是有种Databricks被Snowflake牵着鼻子走的感觉。